////函数模板的隐式推断 类型实参
//#include <iostream>
//using namespace std;
//
//template<typename T>T Max(T x, T y) {
//	return x > y ? x : y;
//}
//
//template<typename T, typename D>void func(D x) {//1)
//
//}
//
//template<typename R, typename D>R hum(D x) {//3)
//	R r;
//	return r;
//}
//int main(void) {
//	int nx = 10, ny = 20;
//	cout << Max(nx, ny) << endl;
//	//Max(nx,ny)==>Max<>(nx,ny)==>Max<int>(nx,ny)
//	double dx = 1.23, dy = 4.56;
//	cout << Max(dx, dy) << endl;
//	//Max(dx,dy)==>Max<>(dx,dy)==>Max<int>(dx,dy)
//
//	string sx = "world", sy = "hello";
//	cout << Max(sx, sy) << endl;
//	//Max(sx,sy)==>Max<>(sx,sy)==>Max<int>(sx,sy)
//
//	//func(nx);error:无法推断类型参数T
//	func<double>(nx);//func<double,int>(nx)
//
//	//Max(nx, dy);//error:类型参数T推断出现歧义
//	Max(nx, (int)dy);//ok
//	Max<int>(nx, dy);//ok
//
//	//int ret = hum(nx);//error:无法推断类型参数R 3)
//	int ret = hum<int>(nx);//ok
//	return 0;
//}